/*
 * Copyright © 2009 Gerald Isaac Schwarz
 * 
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 * 
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */

package condition;

import base.Engine;
import base.Piece;

public abstract class Condition<ValueType> {
	private Engine engine;
	private Piece piece;
	private ValueType minimum;
	private ValueType maximum;
	
	public Condition(Engine engine, Piece piece, ValueType minimum, ValueType maximum) {
		this.engine = engine;
		this.piece = piece;
		this.minimum = minimum;
		this.maximum = maximum;
	}
	
	public Engine getEngine() {
		return this.engine;
	}
	public Piece getPiece() {
		return this.piece;
	}
	
	public ValueType getMinimum() {
		return this.minimum;
	}
	public ValueType getMaximum() {
		return this.maximum;
	}
	
	public abstract boolean evaluate();
}
